package com.tedu.api.thread;


/**
 * 软件--多个或者一个进程【理解：工厂】--线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类--创建线程，编写步骤：
 *                          ①类继承Thread线程类
 *                          ②run方法--线程功能
 *                          ③start方法--启动线程
 *   优点：使用方便
 *   缺点：拓展性比较弱，继承线程，无法继承其他类【java类单继承】
 *        子继承Thread 重写run方法，不利于线程复用
 * 2.Runnable接口--创建线程
 *                    ①子类实现Runnable接口,必须实现run方法
 *                    ②Runnable父类引用指向子类
 *                    ③创建Thread类，Runnable对象传入T和read
 *                    构造器中
 *                    ④启动线程【start方法】
 * 3.匿名内部类方式--Lambda表达式
 */

public class RunnableAPI {
    public static void main(String[] args) {
     //2.Runnable父类引用指向子类对象：多态 造型
      Runnable r=new MyRunnable();
     //3.创建Thread类--Runnable对象传入Thread构造器中
      Thread t1=new Thread(r);
     //4.启动线程
      t1.start();
    //练习：Runnable实现创建线程--MyRunnable1子类  r1 t2
      MyRunnable1 r1= new MyRunnable1();
      Thread t2=new Thread(r1);
      t2.start();
    }
}
//1.子实现类Runnable并且重写run方法
class MyRunnable implements Runnable{
    //专门线程--提供功能方法 run()
    public void run() {
        for (int i=0;i<1000;i++){
            System.out.println("时间不等人,也没人等你 小丑");
        }
    }
}
class MyRunnable1 implements Runnable{
    public void run() {
        for (int i=0;i<1000;i++){
            System.out.println("丑小 你等人没也 人德国不间时");
        }
    }
}

